{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-12-25T14:38:36.674460Z",
     "start_time": "2018-12-25T14:38:36.655566Z"
    },
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# 项目的开始日期，修改单引号中的内容\n",
    "start_time = '2018-12-01'\n",
    "\n",
    "# 项目的结束日期，修改单引号中的内容\n",
    "end_time = '2018-12-07'\n",
    "\n",
    "# excel文件的路径，修改单引号中的内容\n",
    "excel_path = 'test.xlsx'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-12-25T14:38:37.900483Z",
     "start_time": "2018-12-25T14:38:36.678345Z"
    },
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "df = pd.read_excel(excel_path, header=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-12-25T14:38:38.005441Z",
     "start_time": "2018-12-25T14:38:37.911662Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>任务1</th>\n",
       "      <th>任务2</th>\n",
       "      <th>task3</th>\n",
       "      <th>task4</th>\n",
       "      <th>task5</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-12-01</th>\n",
       "      <td>5</td>\n",
       "      <td>6.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-12-02</th>\n",
       "      <td>2</td>\n",
       "      <td>4.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-12-03</th>\n",
       "      <td>10</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-12-04</th>\n",
       "      <td>3</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-12-06</th>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            任务1  任务2  task3  task4  task5\n",
       "2018-12-01    5  6.0    7.0    4.0    3.0\n",
       "2018-12-02    2  4.0    5.0    1.0    NaN\n",
       "2018-12-03   10  NaN    1.0    NaN    NaN\n",
       "2018-12-04    3  NaN    NaN    3.0    2.0\n",
       "2018-12-06    0  NaN    0.0    2.0    0.0"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-12-25T14:38:38.050188Z",
     "start_time": "2018-12-25T14:38:38.010302Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2018-12-01 00:00:00\n",
      "2018-12-07 00:00:00\n"
     ]
    }
   ],
   "source": [
    "import datetime\n",
    "\n",
    "start_time_obj = datetime.datetime.strptime(start_time, '%Y-%m-%d')\n",
    "end_time_obj = datetime.datetime.strptime(end_time, '%Y-%m-%d')\n",
    "print(start_time_obj)\n",
    "print(end_time_obj)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-12-25T14:38:40.671886Z",
     "start_time": "2018-12-25T14:38:40.620759Z"
    },
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "work_load = df.loc[df.index[0]].sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-12-25T14:38:41.184865Z",
     "start_time": "2018-12-25T14:38:41.144870Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "25.0"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "work_load"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-12-25T14:38:42.569404Z",
     "start_time": "2018-12-25T14:38:42.535083Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2018-12-01 00:00:00')"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.index[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-12-25T14:38:42.952246Z",
     "start_time": "2018-12-25T14:38:42.917265Z"
    },
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "date_list = []\n",
    "data_list = []\n",
    "for day in range((end_time_obj - start_time_obj).days + 1):\n",
    "    date_list.append(start_time_obj + datetime.timedelta(days=day))\n",
    "    \n",
    "    data_list.append(work_load * (1 - day * 1.0 / ((end_time_obj - start_time_obj).days)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-12-25T14:38:43.762571Z",
     "start_time": "2018-12-25T14:38:43.728380Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[25.0,\n",
       " 20.833333333333336,\n",
       " 16.666666666666668,\n",
       " 12.5,\n",
       " 8.3333333333333339,\n",
       " 4.1666666666666661,\n",
       " 0.0]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_list"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-12-25T14:52:08.798409Z",
     "start_time": "2018-12-25T14:52:08.727752Z"
    },
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "class Task(object):\n",
    "\n",
    "    __slots__ = ['start_date', 'end_date', 'day_remain_hour_dict', 'task_name', 'date_list']\n",
    "\n",
    "    def __init__(self, name):\n",
    "        self.task_name = name\n",
    "        self.start_date = None\n",
    "        self.end_date = None\n",
    "        self.date_list = []\n",
    "        self.day_remain_hour_dict = {}\n",
    "\n",
    "    def get_reamined_hour(self, date):\n",
    "        if self.end_date and date >= self.end_date:\n",
    "            return 0\n",
    "        return self.day_remain_hour_dict[date]\n",
    "\n",
    "    def set_day_remain_hour(self, date, remain_hour):\n",
    "        if np.isnan(remain_hour):\n",
    "            remain_hour = self.day_remain_hour_dict[self.date_list[-1]]\n",
    "        self.day_remain_hour_dict[date] = remain_hour\n",
    "        if remain_hour <= 0:\n",
    "            self.end_date = date\n",
    "        self.date_list.append(date)\n",
    "\n",
    "    def __repr__(self):\n",
    "#         print(type(self.task_name))\n",
    "        return 'task_name: %s, end at: %s' % (self.task_name.encode('utf8'), self.end_date and self.end_date.strftime('%Y-%m-%d'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-12-25T14:52:09.174887Z",
     "start_time": "2018-12-25T14:52:09.131556Z"
    },
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "task_obj_list = []\n",
    "def prepare_task_obj(task_df):\n",
    "    task_name_list = task_df.columns.values\n",
    "    date_delta = (task_df.index[-1] - task_df.index[0]).days\n",
    "    for task_name in task_name_list:\n",
    "        task_series = task_df[task_name]\n",
    "        if task_series.isnull().all():\n",
    "            continue\n",
    "        task_obj = Task(task_name)\n",
    "        for date in date_list:\n",
    "            if date not in task_df.index:\n",
    "                task_obj.set_day_remain_hour(date, task_obj.get_reamined_hour(task_obj.date_list[-1]))\n",
    "            else:\n",
    "                task_obj.set_day_remain_hour(date, task_series.loc[date])\n",
    "        task_obj_list.append(task_obj)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-12-25T14:52:09.579673Z",
     "start_time": "2018-12-25T14:52:09.538800Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[task_name: 任务1, end at: 2018-12-07,\n",
       " task_name: 任务2, end at: None,\n",
       " task_name: task3, end at: 2018-12-07,\n",
       " task_name: task4, end at: None,\n",
       " task_name: task5, end at: 2018-12-07]"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "prepare_task_obj(df)\n",
    "task_obj_list"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-12-25T14:52:10.379573Z",
     "start_time": "2018-12-25T14:52:10.340704Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[25.0, 15.0, 19.0, 13.0, 13.0, 6.0, 6.0]"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "remain_hour_list = []\n",
    "for date in date_list:\n",
    "    remain_hour_list.append(sum([x.day_remain_hour_dict[date] for x in task_obj_list]))\n",
    "remain_hour_list"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-12-23T14:28:57.585272Z",
     "start_time": "2018-12-23T14:28:57.538022Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[datetime.datetime(2018, 12, 1, 0, 0), datetime.datetime(2018, 12, 2, 0, 0), datetime.datetime(2018, 12, 3, 0, 0), datetime.datetime(2018, 12, 4, 0, 0), datetime.datetime(2018, 12, 5, 0, 0), datetime.datetime(2018, 12, 6, 0, 0), datetime.datetime(2018, 12, 7, 0, 0)]\n"
     ]
    }
   ],
   "source": [
    "print(date_list)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-12-23T14:28:57.643889Z",
     "start_time": "2018-12-23T14:28:57.588306Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[25.0, 20.833333333333336, 16.666666666666668, 12.5, 8.3333333333333339, 4.1666666666666661, 0.0]\n"
     ]
    }
   ],
   "source": [
    "print(data_list)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-12-23T14:28:57.708600Z",
     "start_time": "2018-12-23T14:28:57.648759Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[25.0, 15.0, 19.0, 13.0, 13.0, 6.0, 6.0]\n"
     ]
    }
   ],
   "source": [
    "print(remain_hour_list)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-12-23T14:28:59.282596Z",
     "start_time": "2018-12-23T14:28:57.718947Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x115791090>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x108342e10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "plt.rcParams[\"figure.figsize\"] = (10, 6)\n",
    "plt.style.use('seaborn-whitegrid')\n",
    "plt.plot(date_list, data_list)\n",
    "plt.plot(date_list, remain_hour_list)\n",
    "plt.ylabel('remain hours')\n",
    "plt.xlabel('date')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
